<?php

/**
 * cumpleanyos actions.
 *
 * @package    Sanitas
 * @subpackage cumpleanyos
 * @author     Jose Antonio Sánchez Bedoya
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class cumpleanyosActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->cumpleanyoss = Doctrine_Core::getTable('Cumpleanyos')
      ->createQuery('a')
      ->execute();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->cumpleanyos = Doctrine_Core::getTable('Cumpleanyos')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->cumpleanyos);
  }

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new CumpleanyosForm();
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new CumpleanyosForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($cumpleanyos = Doctrine_Core::getTable('Cumpleanyos')->find(array($request->getParameter('id'))), sprintf('Object cumpleanyos does not exist (%s).', $request->getParameter('id')));
    $this->form = new CumpleanyosForm($cumpleanyos);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($cumpleanyos = Doctrine_Core::getTable('Cumpleanyos')->find(array($request->getParameter('id'))), sprintf('Object cumpleanyos does not exist (%s).', $request->getParameter('id')));
    $this->form = new CumpleanyosForm($cumpleanyos);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($cumpleanyos = Doctrine_Core::getTable('Cumpleanyos')->find(array($request->getParameter('id'))), sprintf('Object cumpleanyos does not exist (%s).', $request->getParameter('id')));
    $cumpleanyos->delete();

    $this->redirect('cumpleanyos/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $cumples = $form->save();   //Redirecciono según de donde venga.      
      $this->redirect('inicio/list');
    }
  }
  
  /*
   *  Metodo que se llama para editar toda la configuracion de los cumpleaños de una vez 
   * (parámetros asunto, texto e idioma).
   */  
  public function executeEditarTodos(sfWebRequest $request)
  {
    //Pongo la vble de sesión a false, para indicar que no es la configuración general lo que estamos tratando.
    $this->getUser()->setAttribute('confgeneral', false);      
    
    /* Creamos la consulta para obtener el idempresa, como solo hay una cojo la primera.
     * no tengo en consideración que esté relacionado con el nombre de usuario    
     */
    $q = Doctrine_Query::create()
            ->select('id')
            ->from('Empresa id');          
    $id_empresa = $q->fetchOne(array(), Doctrine_Core::HYDRATE_SCALAR);

    $this->forward404Unless($crm_empresa = Doctrine_Core::getTable('Empresa')->find($id_empresa), sprintf('Object crm_configuracion does not exist (%s).', $id_empresa));
    
    $this->form = new EmpresaForm($crm_empresa);
    //Lo hago aquí y no en la configuración para que solo estén aquí esos datos y no en los formularios del módulo empresa.
    $this->form->embedRelation('Cumpleanyos');

    /*
     * Deshabilitamos los campos de empresa, para que solamente quede el formulario embebido
     * es necesario hacerlo con todos los campos (requeridos y no requeridos) para que no se
     * queden vacíos en el formulario.
     */
    $this->form->setWidget('cif', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('nombre', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('direccion_linea1', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('direccion_linea2', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('cp', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('poblacion', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('provincia', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('telefono', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('fax', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('web', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('email', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('logo', new sfWidgetFormInputHidden(array()));
    $this->form->setWidget('descripcion', new sfWidgetFormInputHidden(array()));
    
    // Y creo una vble de sesión para que en la empresa al actualizar solo embeba el formulario si viene de aquí.
    $this->getUser()->setAttribute('confcumples', true);
  }
  
}
